home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-04-28 | 2.2 KB | 81 lines | [TEXT/MPS ] |
- /*
- File: Preferences.cp
-
- Contains: minimalist preference file routines
-
- Written by: Dave Falkenburg
-
- Copyright: © 1993-94 by Dave Falkenburg, all rights reserved.
-
- Change History (most recent first):
-
- <4> 11/16/94 DRF Kill a kinda bogus warning by replacing “sizeof(<variable>)”
- with “sizeof(<type>)”.
- <3> 9/27/94 DRF AppLib.h is now Sprocket.h
- <2> 9/9/94 DRF Reordered headers and removed redundant #includes.
- */
-
- #include "Sprocket.h"
-
- #include <Resources.h>
- #include <TextUtils.h>
- #include <Folders.h>
-
- short
- OpenPreferencesResFile(void)
- {
- OSErr err;
- short prefsVRefNum;
- long prefsDirID;
- HParamBlockRec pb;
- short prefsRefNum;
- Str255 prefsFileName;
-
- err = FindFolder(kOnSystemDisk,kPreferencesFolderType,kCreateFolder,&prefsVRefNum,&prefsDirID);
-
- if (err != noErr) // Couldn’t find preferences folder, something is wrong
- return(-1);
-
- GetIndString(prefsFileName,kPreferencesFileStrings,kPreferencesFileName);
-
- // Try openning the Preferences file
-
- prefsRefNum = HOpenResFile(prefsVRefNum,prefsDirID,prefsFileName,fsRdWrPerm);
- if (prefsRefNum == -1)
- {
- // Get the application’s creator
-
- ProcessInfoRec processInfo;
- ProcessSerialNumber currentProc = {0,kCurrentProcess};
-
- processInfo.processInfoLength = sizeof(ProcessInfoRec);
- processInfo.processName = nil;
- processInfo.processAppSpec = nil;
-
- (void) GetProcessInformation(¤tProc,&processInfo);
-
- // Couldn’t open prefs file, try making a new one
-
- HCreateResFile(prefsVRefNum,prefsDirID,prefsFileName);
- pb.fileParam.ioNamePtr = prefsFileName;
- pb.fileParam.ioVRefNum = prefsVRefNum;
- pb.fileParam.ioDirID = prefsDirID;
- pb.fileParam.ioFDirIndex = 0;
- err = PBHGetFInfo(&pb,false);
-
- pb.fileParam.ioNamePtr = prefsFileName;
- pb.fileParam.ioVRefNum = prefsVRefNum;
- pb.fileParam.ioDirID = prefsDirID;
- pb.fileParam.ioFDirIndex = 0;
- pb.fileParam.ioFlFndrInfo.fdType = 'PREF';
- pb.fileParam.ioFlFndrInfo.fdCreator = processInfo.processSignature;
- pb.fileParam.ioFlFndrInfo.fdFlags = 0;
- err = PBHSetFInfo(&pb,false);
-
- if (ResError() == noErr) // Try opening the newly created prefs file if we made it
- prefsRefNum = HOpenResFile(prefsVRefNum,prefsDirID,prefsFileName,fsRdWrPerm);
- }
-
- return(prefsRefNum);
- }
-